﻿<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:CodeGenerator="http://sapura.com.my/codegenerator"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                exclude-result-prefixes="msxsl"
                xml:space="preserve">

    <xsl:output method="text"
                indent="yes"
                />

    <xsl:template match="Metadata" ><xsl:text disable-output-escaping="yes"><![CDATA[//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:3.2.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by Sapura Defense Technologies - Code Generator, Version 3.2.0.
// 

#pragma warning disable 1591

namespace ]]></xsl:text><xsl:value-of select="@Namespace" /><xsl:text disable-output-escaping="yes"><![CDATA[
{
    using System;
    using System.ComponentModel;
    using System.CodeDom.Compiler;
    using System.Diagnostics;
    using System.Threading;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Web.Services.Description;
    using System.Xml.Serialization;

    /// <remarks/>
    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    [DebuggerStepThroughAttribute()]
    [DesignerCategoryAttribute("code")]
    [WebServiceBindingAttribute(Name="]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[ServiceSoap", Namespace="http://tempuri.org/")]
    public partial class ]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[Proxy
        : SoapHttpClientProtocol
    {
        /// <remarks/>
        public ]]></xsl:text><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[Proxy()
        {
            this.Url = "http://localhost/";

            if (this.IsLocalFileSystemWebService(this.Url) == true)
            {
                this.UseDefaultCredentials = true;

                this.useDefaultCredentialsSetExplicitly = false;
            }
            else this.useDefaultCredentialsSetExplicitly = true;
        }

        public new string Url
        {
            get
            {
                return base.Url;
            }
            set
            {
                if (
                    (
                    (this.IsLocalFileSystemWebService(base.Url) == true)
                &&  (this.useDefaultCredentialsSetExplicitly == false)
                )
                &&  (this.IsLocalFileSystemWebService(value) == false)
                )   base.UseDefaultCredentials = false;

                base.Url = value;
            }
        }

        public new bool UseDefaultCredentials
        {
            get
            {
                return base.UseDefaultCredentials;
            }
            set
            {
                base.UseDefaultCredentials = value;

                this.useDefaultCredentialsSetExplicitly = true;
            }
        }

        public new void CancelAsync(object userState)
        {
            base.CancelAsync(userState);
        }

        private bool IsLocalFileSystemWebService(string url)
        {
            if (
                (url == null) 
            ||  (url == string.Empty)
            )   return false;

            Uri wsUri = new Uri(url);

            return (
                wsUri.Port >= 1024
            &&  string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0
            );
        }

        private SendOrPostCallback GetPersonOperationCompleted;

        private bool useDefaultCredentialsSetExplicitly;]]></xsl:text><xsl:apply-templates mode="Implementation" /><![CDATA[
    }]]><xsl:apply-templates mode="Requirements" /><![CDATA[
}

#pragma warning restore 1591
]]><xsl:value-of select="CodeGenerator:Save('WebReferences', '_Reference.cs')" /></xsl:template>

    <xsl:template match="Object[@IsSelected='True']" mode="Implementation"><![CDATA[

        private SendOrPostCallback delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted;

        private SendOrPostCallback select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted;

        private SendOrPostCallback insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted;

        private SendOrPostCallback select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted;

        private SendOrPostCallback update_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted;

        public event delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventHandler delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted;

        public event select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventHandler select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted;

        public event insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventHandler insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted;

        public event select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventHandler select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted;

        public event update_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventHandler update_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted;

        [SoapDocumentMethodAttribute("urn:delete_]]><xsl:value-of select="@Name" /><![CDATA[_operation", RequestNamespace="http://ws.wso2.org/dataservice", OneWay=true, Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        public void delete_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operation (
            [XmlElementAttribute(IsNullable=true)]
            Nullable<int> Id
        )
        {
            this.Invoke(
                "delete_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[]
                {
                    Id
                }
            );
        }

        public void delete_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operationAsync (Nullable<int> Id)
        {
            this.delete_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operationAsync(Id, null);
        }

        public void delete_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operationAsync (
            Nullable<int> Id,
            object userState
        )
        {
            if (this.delete_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted == null)

                this.delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted = new SendOrPostCallback(this.Ondelete_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted);

            this.InvokeAsync(
                "delete_]]><xsl:value-of select="@Name" /><![CDATA[_operation", 
                new object[] {
                    Id
                }, 
                this.delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted, 
                userState
            );
        }

        private void Ondelete_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted (object arg)
        {
            if (this.delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted != null)
            {
                InvokeCompletedEventArgs invokeArgs = (InvokeCompletedEventArgs)(arg);

                this.delete_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted (
                    this,
                    new AsyncCompletedEventArgs (
                        invokeArgs.Error, 
                        invokeArgs.Cancelled, 
                        invokeArgs.UserState
                    )
                );
            }
        }

        [SoapDocumentMethodAttribute("urn:select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operation", RequestNamespace="http://ws.wso2.org/dataservice", ResponseElementName="]]><xsl:value-of select="@Name" /><![CDATA[Collection", ResponseNamespace="http://ws.wso2.org/dataservice", Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        [return: XmlElementAttribute("]]><xsl:value-of select="@Name" /><![CDATA[")]
        public ]]><xsl:value-of select="@Name" /><![CDATA[[] select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operation()
        {
            object[] results = this.Invoke("select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operation", new object[0]);

            return (]]><xsl:value-of select="@Name" /><![CDATA[[])(results[0]);
        }

        public void select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync()
        {
            this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync(null);
        }

        public void select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (object userState)
        {
            if (this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted == null)

                this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted = new SendOrPostCallback(this.Onselect_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted);

            this.InvokeAsync(
                "select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[0], 
                this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted, 
                userState
            );
        }

        private void Onselect_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted (
            object arg
        )
        {
            if (this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted != null)
            {
                InvokeCompletedEventArgs invokeArgs = (InvokeCompletedEventArgs)(arg);

                this.select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted(
                    this, 
                    new select_all_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventArgs(
                        invokeArgs.Results, 
                        invokeArgs.Error, 
                        invokeArgs.Cancelled, 
                        invokeArgs.UserState
                    )
                );
            }
        }

        [SoapDocumentMethodAttribute("urn:insert_]]><xsl:value-of select="@Name" /><![CDATA[_operation", RequestNamespace="http://ws.wso2.org/dataservice", OneWay=true, Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        public void insert_]]><xsl:value-of select="@Name" /><![CDATA[_operation (]]><xsl:call-template name="Parameters" /><![CDATA[
        )
        {
            this.Invoke(
                "insert_]]><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[]
                {
                    ]]><xsl:for-each select="Property"><xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
                    </xsl:if></xsl:for-each><![CDATA[
                }
            );
        }

        public void insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (]]><xsl:call-template name="Parameters" /><![CDATA[
        )
        {
            this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (
                ]]><xsl:for-each select="Property"><xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
                </xsl:if></xsl:for-each><![CDATA[
            );
        }

        public void insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (]]><xsl:call-template name="Parameters" /><![CDATA[, 
            object userState
        )
        {
            if (this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted == null)

                this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted = new SendOrPostCallback (this.Oninsert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted);

            this.InvokeAsync (
                "insert_]]><xsl:value-of select="@Name" /><![CDATA[_operation", 
                new object[] {
                    ]]><xsl:for-each select="Property"><xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
                    </xsl:if></xsl:for-each><![CDATA[
                },
                this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted, 
                userState
            );
        }

        private void Oninsert_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted (
            object arg
        )
        {
            if (this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted != null)
            {
                InvokeCompletedEventArgs invokeArgs = (InvokeCompletedEventArgs)(arg);

                this.insert_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted (
                    this, 
                    new AsyncCompletedEventArgs (
                        invokeArgs.Error,
                        invokeArgs.Cancelled,
                        invokeArgs.UserState
                    )
                );
            }
        }

        [SoapDocumentMethodAttribute("urn:select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operation", RequestNamespace="http://ws.wso2.org/dataservice", ResponseElementName="]]><xsl:value-of select="@Name" /><![CDATA[Collection", ResponseNamespace="http://ws.wso2.org/dataservice", Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        [return: XmlElementAttribute("]]><xsl:value-of select="@Name" /><![CDATA[")]
        public ]]><xsl:value-of select="@Name" /><![CDATA[[] select_with_key_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operation(
            [XmlElementAttribute(IsNullable=true)]
            Nullable<int> Id
        )
        {
            object[] results = this.Invoke(
                "select_with_key_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[]
                {
                    Id
                }
            );

            return (]]><xsl:value-of select="@Name" /><![CDATA[[])results[0];
        }

        public void select_with_key_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operationAsync (
            Nullable<int> Id
        )
        {
            this.select_with_key_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operationAsync (
                Id,
                null
            );
        }

        public void select_with_key_]]><xsl:value-of select="@Name" /><xsl:text disable-output-escaping="yes"><![CDATA[_operationAsync (
            Nullable<int> Id,
            object userState
        )
        {
            if (this.select_with_key_]]></xsl:text><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted == null)

                this.select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted = new SendOrPostCallback(
                    this.Onselect_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted
                );

            this.InvokeAsync(
                "select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[]
                {
                    Id
                },
                this.select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted,
                userState
            );
        }

        private void Onselect_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted (
            object arg
        )
        {
            if (this.select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted != null)
            {
                InvokeCompletedEventArgs invokeArgs = (InvokeCompletedEventArgs)arg;

                this.select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted (
                    this,
                    new select_with_key_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompletedEventArgs (
                        invokeArgs.Results,
                        invokeArgs.Error,
                        invokeArgs.Cancelled,
                        invokeArgs.UserState
                    )
                );
            }
        }

        [SoapDocumentMethodAttribute("urn:update_]]><xsl:value-of select="@Name" /><![CDATA[_operation", RequestNamespace="http://ws.wso2.org/dataservice", OneWay=true, Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        public void update_]]><xsl:value-of select="@Name" /><![CDATA[_operation (]]><xsl:call-template name="Parameters" /><![CDATA[
        )
        {
            this.Invoke(
                "update_]]><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[]
                {
                    ]]><xsl:for-each select="Property"><xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
                    </xsl:if></xsl:for-each><![CDATA[
                }
            );
        }

        public void update_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (]]><xsl:call-template name="Parameters" /><![CDATA[
        )
        {
            this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync (
                ]]><xsl:for-each select="Property"><xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
                </xsl:if></xsl:for-each><![CDATA[,
                null
            );
        }

        public void update_]]><xsl:value-of select="@Name" /><![CDATA[_operationAsync(
            Nullable<int> ]]><xsl:value-of select="@Name" /><![CDATA[_id,
            object userState
        )
        {
            if (this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted == null)

                this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted = new SendOrPostCallback(this.Onupdate_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted);

            this.InvokeAsync(
                "update_]]><xsl:value-of select="@Name" /><![CDATA[_operation",
                new object[] {
                },
                this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted, 
                userState
            );
        }

        private void Onupdate_]]><xsl:value-of select="@Name" /><![CDATA[_operationOperationCompleted (
            object arg
        )
        {
            if (this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted != null) {

                InvokeCompletedEventArgs invokeArgs = (InvokeCompletedEventArgs)arg;

                this.update_]]><xsl:value-of select="@Name" /><![CDATA[_operationCompleted (
                    this,
                    new AsyncCompletedEventArgs(
                        invokeArgs.Error,
                        invokeArgs.Cancelled,
                        invokeArgs.UserState
                    )
                );
            }
        }]]></xsl:template>

        <xsl:template name="Parameters"><xsl:for-each select="Property">
            [XmlElementAttribute(IsNullable=true)]
            <![CDATA[ ]]><xsl:call-template name="ClrDataType" /> <xsl:value-of select="@Name"/><xsl:if test="position()!=last()">,
</xsl:if></xsl:for-each></xsl:template>

    <xsl:template match="Object[@IsSelected='True']"
                  mode="Requirements"><![CDATA[

    [GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
    [SerializableAttribute()]
    [DebuggerStepThroughAttribute()]
    [DesignerCategoryAttribute("code")]
    [XmlTypeAttribute(Namespace = "http://ws.wso2.org/dataservice")]
    public partial class ]]><xsl:value-of select="@Name"/><![CDATA[
    {
        public ]]><xsl:value-of select="@Name"/><![CDATA[ ()
            : base()
        { }]]><xsl:for-each select="Property"><![CDATA[

        private ]]><xsl:call-template name="ClrDataType" /><![CDATA[ _]]><xsl:value-of select="@Name"/><![CDATA[;
        [XmlElementAttribute(DataType = "]]><xsl:call-template name="ClrDataType" /><![CDATA[", IsNullable = true)]
        public ]]><xsl:call-template name="ClrDataType" /><![CDATA[ ]]><xsl:value-of select="@Name"/><![CDATA[
        {
            get
            {
                return this._]]><xsl:value-of select="@Name"/><![CDATA[;
            }
            set
            {
                this._]]><xsl:value-of select="@Name"/><![CDATA[ = value;
            }
        }]]></xsl:for-each><![CDATA[
    }

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    public delegate void delete_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventHandler(object sender, AsyncCompletedEventArgs e);

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    public delegate void select_all_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventHandler(object sender, select_all_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs e);

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    [DebuggerStepThroughAttribute()]
    [DesignerCategoryAttribute("code")]
    public partial class select_all_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs
        : AsyncCompletedEventArgs
    {
        private object[] results;

        internal select_all_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs (
            object[] results,
            Exception exception,
            bool cancelled,
            object userState
        ) : base(
            exception,
            cancelled,
            userState
        )
        {
            this.results = results;
        }

        public ]]><xsl:value-of select="@Name"/><![CDATA[[] Result
        {
            get
            {
                this.RaiseExceptionIfNecessary();

                return (]]><xsl:value-of select="@Name"/><![CDATA[[])this.results[0];
            }
        }
    }

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    public delegate void insert_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventHandler(object sender, AsyncCompletedEventArgs e);

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    public delegate void select_with_key_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventHandler(object sender, select_with_key_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs e);

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    [DebuggerStepThroughAttribute()]
    [DesignerCategoryAttribute("code")]
    public partial class select_with_key_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs
        : AsyncCompletedEventArgs
    {
        private object[] results;

        internal select_with_key_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventArgs(
            object[] results,
            Exception exception,
            bool cancelled,
            object userState
        )   : base(
                exception,
                cancelled,
                userState
        )
        {
            this.results = results;
        }

        public ]]><xsl:value-of select="@Name"/><![CDATA[[] Result
        {
            get
            {
                this.RaiseExceptionIfNecessary();

                return (]]><xsl:value-of select="@Name"/><![CDATA[[])this.results[0];
            }
        }
    }

    [GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408")]
    public delegate void update_]]><xsl:value-of select="@Name"/><![CDATA[_operationCompletedEventHandler(object sender, AsyncCompletedEventArgs e);]]></xsl:template>

<xsl:template name="ClrDataType"><xsl:choose><xsl:when test="@DataType='character varying'">String</xsl:when><xsl:when test="@DataType='character'">String</xsl:when><xsl:when test="@DataType='bytea'">byte[]</xsl:when><xsl:when test="@DataType='xml'">String</xsl:when><xsl:when test="@DataType='xml'">String</xsl:when><xsl:when test="@DataType='text'">String</xsl:when><xsl:when test="@DataType='timestamp with time zone'">DateTime</xsl:when><xsl:when test="@DataType='timestamp without time zone'">DateTime</xsl:when><xsl:when test="@DataType='date'">DateTime</xsl:when><xsl:when test="@DataType='integer'">Int32</xsl:when><xsl:otherwise><xsl:value-of select="translate(@DataType,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" /></xsl:otherwise></xsl:choose></xsl:template>

</xsl:stylesheet>